package com.cmc.cloud.cmclink.doc.rpcservice;

import com.cmc.cloud.cmclink.doc.vo.sovo.sovslvoyvo.SoVslvoyScheduleVO;
import com.cmc.cloud.cmclink.svl.api.base.req.*;
import com.cmc.cloud.cmclink.svl.api.base.resp.VesselVoyRespDTO;
import com.cmc.cloud.cmclink.svl.api.base.resp.VoyQueryRespDTO;

import java.time.LocalDate;
import java.util.List;

/**
 * @author lzp
 */
public interface VoyScheduleService {
    /**
     * 获取船期信息过滤掉非法的状态,过滤掉N-转船，P-跳港，V-取消的状态，目前不确定是否还有其他的有效状态所以先过滤非正常状态,根据时间获取
     *
     * @param voyQueryReqDTO req
     * @return List<VoyQueryRespDTO>
     */
    List<VoyQueryRespDTO> listByCondition(VoyQueryReqDTO voyQueryReqDTO);

    /**
     * 获取船期信息过滤掉非法的状态,过滤掉N-转船，P-跳港，V-取消的状态，目前不确定是否还有其他的有效状态所以先过滤非正常状态,根据船名航次查询
     *
     * @param vesselVoyReqDTO
     * @return
     */
    List<VesselVoyRespDTO> listVesselVoy(VesselVoyReqDTO vesselVoyReqDTO);

    /**
     * 获取船期信息过滤掉非法的状态,过滤掉N-转船，P-跳港，V-取消的状态，根据船名航次查询
     *
     * @param polPodReq
     * @return
     */
    List<SoVslvoyScheduleVO> getLineScheduleByPolPod(PolPodReqDTO polPodReq);

    /**
     * 获取驳船船期数据
     *
     * @param bargePolPodReqDto
     * @return
     */
    List<SoVslvoyScheduleVO> multiLineScheduleByPolPod(BargePolPodReqDTO bargePolPodReqDto);

    /**
     * 多式联运获取时间
     *
     * @param bargeQueryReqDto
     * @return
     */
    LocalDate multiBargeSchedule(BargeQueryReqDTO bargeQueryReqDto);

}
